package com.atguigu.ds;

import java.util.function.BiConsumer;

public interface Map<K, V> {

    /**
     * 用于查询哈希表中键值对的个数
     *
     * @return 键值对个数
     */
    int size();

    /**
     * 用于判断哈希表是否为空
     *
     * @return 哈希表是否为空
     */
    boolean isEmpty();

    /**
     * 向哈希表中插入键值对
     *
     * @param key   键
     * @param value 值
     */
    void put(K key, V value);

    /**
     * 根据Key查询对应的Value，若指定key不存在则返回null
     *
     * @param key 键
     * @return 值，不存在则为null
     */
    V get(K key);

    /**
     * 删除指定key对应的键值对
     *
     * @param key 键
     * @return 若存在，则返回key对应的值，否则返回null
     */
    V remove(K key);

    /**
     * 对键值对进行遍历
     *
     * @param consumer 对键值对的操作函数
     */
    void forEach(BiConsumer<K, V> consumer);
}